<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>



        //   传统异步问题的解决方案    回调函数  success
        //       回调函数在复杂的业务逻辑中容易产生地狱回调问题
        //       为了更好的解决异步问题  promise


        //  promise  "承诺"  是一个对象   es6新增的    解决异步问题
        //    当前许下一个承诺   过一段时间才会兑现  (好的，坏的)

        //    promise是一个容器   一般容器里面存放的是异步的代码


        //   promise有三种状态
        //     一开始  pending  进行中
        //     有了结果之后
        //         成功  pending -> fulfilled
        //         失败  pending -> rejected


        //  promise 创建以后，如果失败  会直接报错

        //   调用then方法(第二个参数)



        // 创建

        //    抽奖   奇数中奖  偶数没有中奖
        // const p = new Promise(function (fn1, fn2) {
        //     setTimeout(() => {
        //         const n = parseInt(Math.random() * 100);
        //         if (n % 2) {
        //             fn1(n + '成功');
        //         } else {
        //             fn2(n + '失败');
        //         }
        //     }, 1000)
        // })

        // console.log(p);



        // // then (fn1 , fn2)
        // p.then(function (res) {
        //     console.log(res + '成功之后要做的事情;;;;');
        // }, function (res) {
        //     console.log(res + '失败之后要做的事情;;;;');
        // })



        const p = new Promise(function (resolve, reject) {
            setTimeout(() => {
                const n = parseInt(Math.random() * 100);
                n % 2 ? resolve(n) : reject(n);
            }, 1000)
        })

        console.log(p)

        p.then(
            res => {
                console.log(res + '抽中了');
            },
            err => {
                console.log(err + '没中奖');
            }
        )

    </script>

</body>

</html>